home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 21 / AACD 21.iso / AACD / Programming / CVS / cvs.readme < prev    next >
Encoding:
Text File  |  2001-05-01  |  11.1 KB  |  253 lines

  1. Short:    CVS 1.11.1p1 - Concurrent Versions System
  2. Author:   Various; ported by Olaf Barthel <olsen@sourcery.han.de>, Jens Langner <Jens.Langner@htw-dresden.de>
  3. Uploader: Jens Langner <Jens.Langner@htw-dresden.de>
  4. Type:     util/gnu
  5.  
  6. CVS 1.11.1p1 Amiga port (29 April 2001)
  7. =======================================
  8.  
  9. Introduction
  10. ------------
  11. This is a somewhat rough port of GNU CVS 1.11.1p1, a version control system, which
  12. allows you to keep old versions of files (usually source code), keep a log of
  13. who, when, and why changes occurred, etc., like RCS or SCCS. It handles
  14. multiple developers, multiple directories, triggers to enable/log/control
  15. various operations, and can work over a wide area network. The following tasks
  16. are not included; they can be done in conjunction with CVS but will tend to
  17. require some script-writing and software other than CVS: bug-tracking, build
  18. management (that is, make and make-like tools), and automated testing. (Quoted
  19. from the CVS documentation.)
  20.  
  21. I call this a 'rough port' since it is not as polished as, say Heinz Wrobel's
  22. excellent 'RCS' port. It does what it needs to do, but a few features are
  23. sorely lacking, such as support for Amiga file protection bits and code to
  24. communicate with CVS servers via secure channels (Kerberos, SSH). On the other
  25. hand, however, you get everything, and perhaps more, you got with the previous
  26. Amiga ports of CVS: this port does not require 'ixemul.library' to work and it
  27. does not require an RCS installation as it is completely self contained. The
  28. port also probably would win a price as the largest 'pure' executable; it can
  29. be made resident.
  30.  
  31.  
  32. What's in this package?
  33. -----------------------
  34. This distribution contains the Amiga port, the Amiga specific source code and
  35. most of the original GNU CVS 1.11.1p1 distribution. 'Most' in this case means that
  36. only the original source code has been omitted in order to keep the
  37. distribution archive small; the documentation and support files are all
  38. provided. The original source code can be downloaded from the Internet at
  39. 'ftp://ftp.cvshome.org/pub/cvs-1.11.1p1/cvs-1.11.1p1.tar.gz'. I have added two more
  40. files which are converted from the original Unix man pages, namely 'cvs.1.man'
  41. and 'cvs.5.man' whose sources can be found in the 'cvs-1.11.1p1/man' directory.
  42.  
  43.  
  44. Installation
  45. ------------
  46. Almost everything you need to get CVS up and running is contained in the
  47. archive which also included the 'README.AMIGA' file you are currently reading.
  48. And that means the 'cvs' executable. You will also need a working
  49. 'queue-handler' (the one that ships with Workbench 3.1 and beyond is,
  50. unfortunately, broken) which can be found on Aminet (you can find the archive
  51. at 'http://us.aminet.net/pub/aminet/util/sys/HWGQueue.lha'). A TCP/IP stack
  52. like Miami or AmiTCP is supported but not strictly required: you can perfectly
  53. well keep your CVS repository on your local machine. Since CVS may ask you to
  54. edit the log entries associated with the files to store, you may want to
  55. configure the 'EDITOR' environment variable. Last, but not least, you must set
  56. up an environment variable which allows CVS to associate you with the changes
  57. you made; this should be the 'USER', 'LOGUSER' or 'USERNAME' variable.
  58.  
  59. Most importantly, this port requires Kickstart 2.04 or higher.
  60.  
  61. Here is how you could set up CVS on your machine. We start by creating two
  62. drawers on the 'Work:' volume:
  63.  
  64.    MakeDir Work:CVS-Root
  65.    MakeDir Work:CVS-Home
  66.  
  67. Next, we add two lines to the 'S:User-Startup' file:
  68.  
  69.    Assign CVSHOME: Work:CVS-Home
  70.    Path CVSHOME: Add
  71.  
  72. The CVS program will need to be copied:
  73.  
  74.    Copy cvs Work:CVS-Home CLONE
  75.  
  76. And the path to the CVS repository needs to be set:
  77.  
  78.    SetEnv CVSROOT :local:Work:CVS-Root
  79.    Copy ENV:CVSROOT ENVARC:
  80.  
  81. Two environment variables need to be set up. Most importantly, CVS will need
  82. your ID to write it into the log and revision files it creates. The Amiga port
  83. will query three environment variables for that information, in the following
  84. order: 'USER', 'LOGUSER' and 'USERNAME'. This means if the variable 'USER' is
  85. not set, it will proceed to check whether 'LOGUSER' is set, and so forth. You
  86. may have already configured these variables, but if you haven't, I suggest you
  87. set up the 'LOGUSER' variable, like this:
  88.  
  89.    SetEnv LOGUSER <Your ID here>
  90.    Copy ENV:LOGUSER ENVARC:
  91.  
  92. Note that <Your ID here> should be replaced by a mnemonic, nick name or short
  93. name that must not contain any blank space characters.
  94.  
  95. You may want to configure the 'EDITOR' environment variable to invoke your
  96. preferred text editor when CVS requests that log messages are added for an
  97. update. If this variable is not set, CVS will default to invoke the 'Ed'
  98. editor. This can be problematic if you have installed 'CygnusEd' whose 'Ed'
  99. program detaches from the Shell that invoked it. When CVS invokes the editor,
  100. it expects it to return only when the user has finished editing the respective
  101. file. Here is an example configuration for CygnusEd:
  102.  
  103.    SetEnv EDITOR Ed -keepio
  104.  
  105. And here is one for TurboText:
  106.  
  107.    SetEnv EDITOR TTX WAIT
  108.  
  109. Don't forget to save the environment variable setting to make it permanent,
  110. like this:
  111.  
  112.    Copy ENV:EDITOR ENVARC:
  113.  
  114. Finally, install the 'queue-handler' from Aminet and reboot your machine. When
  115. the system is again up and running, initialize the CVS repository like this:
  116.  
  117.    cvs init
  118.  
  119. And that's all. Well, maybe you want to add a few default options to the
  120. configuration file CVS reads upon startup. That file should be placed in the
  121. 'CVSHOME:' directory and called '.cvsrc':
  122.  
  123.  
  124. Usage
  125. -----
  126. I personally found the default CVS documentation to be rather confusing. If
  127. you don't know rather well what CVS is good for, the examples, the
  128. terminology, all this doesn't seem to make great sense. My introduction to CVS
  129. followed with Karl Fogel's book "Open Source Development with CVS" which
  130. describes in compact form what CVS is and how it may be used. I suggest that
  131. you consult the book (portions of which are available from 'www.coriolis.com')
  132. and/or the CVS documentation (which has been included with this archive in the
  133. 'cvs-1.11/doc' drawer) for hints and ideas on how to use the program.
  134.  
  135. What many people fail to realize and what keeps them from using CVS in place
  136. of the revision control system they have used for years is that you do not
  137. need a networked CVS repository in order to use CVS. A local repository will
  138. do. In fact, I switched over most of my current software development projects
  139. to use a single local repository after I realized that CVS does much better
  140. what I had previously used RCS for.
  141.  
  142.  
  143. Notes on the implementation
  144. ---------------------------
  145. The Amiga port implements only the client side of the CVS system. This means
  146. that you can check out projects on remote servers but your local Amiga cannot
  147. be a CVS server itself. This feature was omitted deliberately since I could
  148. not find a safe and useful way to make CVS server mode work on the Amiga.
  149. AmigaOS is not a server operating system and shoehorning the code to make it
  150. work somehow would not have helped. If you need a CVS server, try a dedicated
  151. solution using, for example, 'NetBSD'. The Amiga port can communicate with the
  152. server using the remote shell protocol (rsh), and I have verified that the
  153. process works reasonably well with, for example, the public 'Samba' CVS
  154. repository. If you need a more secure method to communicate with the server
  155. ('rsh' is notoriously insecure and many systems no longer support it for
  156. precisely that reason) such as 'Kerberos IV' or 'Secure Shell' (ssh), you'll
  157. have a problem because there are no Amiga ports of these facilities available
  158. yet.
  159.  
  160. CVS does not have a very sophisticated porting layer. Its file name semantics
  161. all stem from the Unix world and the 'OS/2', 'VMS' and 'Windows NT' ports
  162. merely resort to flipping slashes in file names, if necessary, when it comes to
  163. make a name fit the local system's semantics. I had to find a similar way to
  164. make the semantics work on the Amiga. What I did was to add a translation
  165. service in the Amiga specific code which knows how to translate names like '.'
  166. or '..'. But that's where it ends. Any more sophisticated naming schemes like
  167. 'foo/.././bar' may fail to translate properly. But then, those complex
  168. patterns should be pretty rare anyway.
  169.  
  170. Unlike Heinz Wrobel's excellent 'RCS' port, this CVS port does not preserve
  171. Amiga file protection bits for files checked in. When you check in a project
  172. and check it out again, all file and directory protection bits will default to
  173. 'rwed', losing the 'archived', 'pure' and 'script' bits.
  174.  
  175. The Amiga port will expand wild card patterns for file and directory names
  176. specified as command line parameters, such as "#?.c". The wild card pattern
  177. syntax is that of AmigaDOS. It is *not* the syntax of the standard regular
  178. expressions other GNU tools will use.
  179.  
  180. You can access remote CVS repositories by means of a properly configured
  181. TCP/IP stack. This port requires that the stack complies to the AmiTCP V3 API
  182. definition, which all modern Amiga TCP/IP stacks do. It does not work with the
  183. INet-225 TCP/IP stack, though.
  184.  
  185. When CVS resorts to calling external programs, a working 'PIPE:' device is
  186. required, which is not yet part of the AmigaOS Workbench distribution. Do not
  187. underestimate this. The program will fail or behave erratically without a
  188. working 'PIPE:' device. It is strongly recommended to download a working
  189. 'queue-handler', such as from Aminet.
  190.  
  191. The source code for the Amiga port is included in this distribution. All you
  192. need to know before you can recompile this CVS port is described in the file
  193. 'README.AMIGA' which you can find in the 'source' directory.
  194.  
  195. This is a 'single user' CVS port. There is just one single home directory
  196. (referred to as 'CVSHOME:') and your login name and ID are assumed to be the
  197. same (set in the 'USER', 'LOGUSER' or 'USERNAME' environment variables).
  198.  
  199. There is no 'cvsbug' shell script or program included with this port.
  200.  
  201.  
  202. Contacting the author
  203. ---------------------
  204. If you have any further questions on this port, feel free to contact us:
  205.  
  206.    Olaf Barthel
  207.    Brabeckstr. 35
  208.    D-30559 Hannover
  209.    Federal Republic of Germany
  210.  
  211.    olsen@sourcery.han.de
  212.  
  213.    Jens Langner
  214.    Lannerstrasse 1
  215.    D-01219 Dresdem
  216.    Federal Republic of Germany
  217.  
  218.    Jens.Langner@htw-dresden.de
  219.  
  220. History
  221. -------
  222.  
  223. 2001-04-29 Jens Langner <Jens.Langner@htw-dresden.de>
  224.  
  225.  * updated CVS source tree to latest version 1.11.1p1
  226.    and updated amiga.c implementation accordingly
  227.  
  228.  * CVS/Entries files were broken because of some wrong time calculation
  229.    in convert_fileinfo_to_stat()
  230.  
  231.  * fixed some bugs in the smakefiles and corrected some header files
  232.  
  233. 2001-02-08 Olaf Barthel <olsen@sourcery.han.de>
  234.  
  235.  * Whoops. The fstat() replacement function did not get called and
  236.    thus ended up trashing the protection bits of files checked out.
  237.  
  238.  * The current signal handler was not properly restored in the
  239.    password entry routine.
  240.  
  241. 2001-02-07 Olaf Barthel <olsen@sourcery.han.de>
  242.  
  243.  * The password query routine failed to store the password entered,
  244.    rendering cvs almost entirely useless. The code was also vulnerable
  245.    when receiving a ^C break signal.
  246.  
  247.  * Rewrote stat(), fstat(), lstat() and chmod() from scratch since
  248.    the original implementations turned out to be fundamentally
  249.    incompatible with how CVS would use file attribute bits.
  250.  
  251.  * Worked around another potential pitfall with the access()
  252.    implementation.
  253.